package net.dengzixu.java.homework.period9;

/**
 * @author Deng Zixu <admin@dengzixu.com>
 */
public class Period9Homework1 {

    public static void main(String[] args) {
        System.out.println(reverse(352));
//        System.out.println(reverse2(352));
    }

    public static int reverse(int num) {
        // numLong 数字长度
        // temp 临时变量
        int numLong = 1, temp = num;
        int reverseNumber = 0;

        // 取数字位数
        while ((temp /= 10) != 0) {
            numLong++;
        }

        /*
            大致整理一下思路 以 10086 为例
            1. 先计算数字长度是多少 10086 长度为 5
            2. 用 10086 / 10000 得出 最高位为 1
            3. 再计算 10086 % 10000 储存剩下的数字
            4. 然后反过来乘 10 对应的位数次方
         */
        for (int i = numLong, j = 0; i > 0; i--, j++) {
            // 依次 取最高位
            int temp1 = num / (int) Math.pow(10, i - 1);
            // 剔除最高位
            num %= (int) Math.pow(10, i - 1);
            // 最高位反向乘10的N次方
            reverseNumber += temp1 * (int) Math.pow(10, j);
        }
        return reverseNumber;
    }

    /**
     * 偷鸡方法 1
     *
     * @param num 整数
     * @return 逆整数
     */
    public static int reverse2(int num) {
        // StringBuilder 一把梭
        String oString = String.valueOf(num);
        String rString = new StringBuffer(oString).reverse().toString();
        return Integer.parseInt(rString);
    }
}
